# -*- coding: utf-8 -*-
"""
@Time ： 2024/4/9 15:55
@Auth ： gc
"""
import pika,time
credentials = pika.PlainCredentials('root', 'b2Qw0Sn9Ur')
consumer = pika.BlockingConnection(pika.ConnectionParameters('172.18.0.8', 6005, virtual_host = '/',credentials =  credentials))#创建socket连接
channel = consumer.channel()#创建管道
# channel.exchange_declare(exchange='dem.demqueue.queue.intelligent_event',exchange_type = 'fanout')
# result = channel.queue_declare(exclusive=True)#exclusive排他，唯一的，自动删除连接。
# queue_name = result.method.queue#创建一个随机的队列名称
# print('queue_name',queue_name)#打印该队列名称
# channel.exchange_declare(exchange='dem.demqueue.queue.intelligent_event',exchange_type = 'fanout')
channel.queue_declare(queue='aatest', durable=True)
channel.queue_bind(exchange='dem.demqueue.queue.intelligent_event',
                      queue = 'aatest')
def backcall(ch,method,properties,body):#参数body是发送过来的消息。
    print(ch,method,properties)

    print('[x] Received %r'%body)
    ch.basic_ack(delivery_tag=method.delivery_tag)

channel.basic_consume(#回调函数。执行结束后立即执行另外一个函数返回给发送端是否执行完毕。
                      queue='aatest',
                        on_message_callback = backcall
                      #no_ack=True#不会告知服务端我是否收到消息。一般注释。
                       )#如果注释掉，对方没有收到消息的话不会将消息丢失，始终在队列里等待下次发送。

print('waiting for message To exit   press CTRL+C')
channel.start_consuming()#启动后进入死循环。一直等待消息。